package com.itheima.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.github.pagehelper.PageInfo;
import com.itheima.entity.PageResult;
import com.itheima.entity.QueryPageBean;
import com.itheima.entity.Result;
import com.itheima.pojo.CheckGroup;
import com.itheima.service.CheckgroupService;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/checkgroup")
public class CheckgroupController {

    @Reference
    private CheckgroupService checkgroupService;
    /*
    * 1.检查组查询
        a.请求地址：/checkgroup/findPage.do
        b.请求参数： currentPage、pageSize、queryString
        c.功能是什么：带条件的分页查询
        d.返回什么：total 、rows
        *
        *
    * */
    @RequestMapping("/findPage")
    public PageResult findPage(@RequestBody QueryPageBean queryPageBean){
        PageInfo<CheckGroup> pageInfo =  checkgroupService.findPage(queryPageBean);
        return new PageResult(pageInfo.getTotal(),pageInfo.getList());
    }
    /*
    *  b.检查组新增
           1）.请求地址： checkgroup/add.do
           2）.请求参数：checkitemIds（普通数组参数）、   {code, name, helpCode, sex, remark, attention}(请求体中的json参数)
           3）.功能是什么： 1、添加数据到检查组表；  2、获取到检查组表中新增数据的主键、  3、根据检查组id和检查项id添加数据到中间表
           4）.返回什么：成功（flag、message） 失败（flag、message）
    * */
    @RequestMapping("/add")
    public Result add(@RequestBody CheckGroup checkGroup,int[] checkitemIds){
        try{
            checkgroupService.add(checkGroup,checkitemIds);
            return new Result(true,"您好坤坤，您添加成功");
        }catch (Exception e){
            e.printStackTrace();
            return new Result(false,"对不起坤坤，您添加失败");
        }
    }
    /*
    *  1.检查组数据回显
                1）.请求地址：/checkgroup/findById.do
                2）.请求参数：id（普通参数）
                3）.功能是什么：根据id查询检查组数据
                4）.返回什么：成功（flag、data）  、  失败（flag、message）
    * */
    @RequestMapping("/findById")
    public Result findById(int id){
        try{
            CheckGroup checkGroup =  checkgroupService.findById(id);
            return new Result(true,checkGroup);
        }catch (Exception e){
            e.printStackTrace();
            return new Result(false,"对不起坤坤，您查询失败");
        }
    }
    /*
    * 3.回显当前检查组对应的检查项id
                1）.请求地址：/checkgroup/findCheckItemIdsByCheckGroupId.do
                2）.请求参数：id（普通参数）
                3）.功能是什么： 回显当前检查组对应的检查项id
                4）.返回什么：成功（flag、data）  、  失败（flag、message）
    * */
    @RequestMapping("/findCheckItemIdsByCheckGroupId")
    public Result findCheckItemIdsByCheckGroupId(int id){
        try{
            List<Integer> checkItemIds =  checkgroupService.findCheckItemIdsByCheckGroupId(id);
            return new Result(true,checkItemIds);
        }catch (Exception e){
            e.printStackTrace();
            return new Result(false,"对不起您查询检查项id失败了");
        }
    }

    /*
    *b.编辑
            1）.请求地址：/checkgroup/edit.do
            2）.请求参数：  checkitemIds(普通数组参数)、 {id,code, name, helpCode, sex, remark, attention}(请求体中的json参数)
            3）.功能是什么：1、根据表单参数修改检查组表  2、根据参数修改中间表
            4）.返回什么：成功（flag、message） 失败（flag、message）
    * */
    @RequestMapping("/edit")
    public Result edit(@RequestBody CheckGroup checkGroup,int[] checkitemIds){
        try{
            checkgroupService.edit(checkGroup,checkitemIds);
            return new Result(true,"亲，修改成功了");
        }catch (Exception e){
            e.printStackTrace();
            return new Result(false,"亲，修改失败了");
        }
    }

    /*
    *     4.检查组删除
        a.请求地址：/checkgroup/delete.do
        b.请求参数：  id
        c.功能是什么： 根据检查组id删除检查组数据
        d.返回什么：成功（flag、message） 失败（flag、message）
    * */
    @RequestMapping("/delete")
    public Result delete(int id){
        try{
            checkgroupService.delete(id);
            return new Result(true,"删除成功");
        }catch (Exception e){
            e.printStackTrace();
            return new Result(false,"删除失败");
        }
    }
    /*
        某为很好
    *  b.回显所有检查组
            1).请求地址： /checkgroup/findAll.do
            2).请求参数：没有
            3).功能是什么：查询所有检查组
            4).返回什么：成功（flag、data）  、  失败（flag、message）
    * */
    @RequestMapping("/findAll")
    public Result findAll(){
        try{
            List<CheckGroup> checkGroups =  checkgroupService.findAll();
            return new Result(true,checkGroups);
        }catch (Exception e){
            e.printStackTrace();
            return new Result(false,"您好查询检查组失败");
        }
    }
}
